package learning.groovy.object

/**
 * 代码块：闭包
 * 闭包不是一个新的概念，但是它通常用在函数式语言中，
 * 它允许执行一个任意制定好的代码块。
 * 
 * Java匿名内部类
 * 
 * 通俗的说，一个闭包是一个用花括号围起来的语句块，像别的任何代码块，
 * 为了传递参数给闭包，闭包有一组可选的参数列表，通过“->”标识列表的结束。
 */
class Closure {
	
	static main(args){
		[1,2,3].each{entry->println entry}
		
		//Integer的upto方法，这个方法用来从当前整数值到结束的整数值之间，为每个整数做一些工作。
		
		//使用闭包计算所有在会议室的客人之间的碰杯数
		def clinksWithGuest=0
		def totalClinks=0
		def partyPeople=100
		1.upto(partyPeople) {
			guestNumber->
			println guestNumber
			clinksWithGuest=guestNumber-1
			totalClinks+=clinksWithGuest
		}
		println "totalClinks:"+totalClinks
		assert totalClinks==(partyPeople*(partyPeople-1))/2
	}
	
}
